# BCKF — Tester drukarek fiskalnych

Uruchom `release/BCKF-Tester.exe`. Program dla Windows 10/11 x64, korzysta z .NET Framework 4.x dostępnego w Windows. Folder release musi zawierać wszystkie dołączone biblioteki DLL. Nie wymaga Pythona, instalacji ani uprawnień administratora.

## Obsługa

1. Kliknij dowolne miejsce lewego panelu POSNET lub prawego panelu ELZAB.
2. Kliknij zakładkę COM / USB — wyszukiwanie uruchomi się automatycznie. Przycisk „Wyszukaj automatycznie” pozwala też rozpocząć lub ponowić test. Program sprawdza wszystkie wykryte porty COM przy prędkościach 9600, 19200, 38400, 57600, 115200, 4800, 2400 i 1200 b/s. USB musi być skonfigurowane jako wirtualny port COM z odpowiednim sterownikiem producenta. Bezpośredni USB HID i drukarki systemowe Windows nie są obsługiwane.
3. TCP / IP → wpisz adres IP i port usługi komunikacji drukarki. Porty początkowe 6666 (Posnet) i 5010 (Elzab) są podpowiedzią, muszą odpowiadać konfiguracji drukarki. Obsługiwane są adresy IPv4 i IPv6; biblioteka Elzab może ograniczać obsługę IPv6.
4. Po otrzymaniu odpowiedzi identyfikacyjnej drukarki pojawia się okno „Wydruk testowy”. Naciśnięcie przycisku wysyła dokument niefiskalny z tekstem TEST DRUKARKI. Nagłówek, data, oznaczenie niefiskalne i stopka mogą być dodawane przez urządzenie.
5. „Przerwij” kończy wyszukiwanie po zakończeniu bieżącego zapytania. Zamknięcie okna wyniku zwalnia połączenie. W razie błędu w trakcie wydruku sprawdź stan dokumentu na drukarce, zanim ponowisz test.

Zamknij program sprzedażowy przed testem: port COM może być używany tylko przez jedną aplikację. Program blokuje drugą własną instancję i nie łączy się jednocześnie z dwiema drukarkami. Otwarcie TCP lub COM bez odpowiedzi protokołu nie oznacza połączenia z drukarką.

## Zakres zgodności

POSNET: natywny tekstowy protokół POSNET (STX/ETX, CRC16-CCITT). Identyfikacja `sid`, stan mechanizmu `sprn`, wydruk `formstart`, `formformattedline`, `formend` (superformatka 200). Drukarka musi obsługiwać te polecenia i mieć ustawiony protokół POSNET na interfejsie PC. Tryb THERMAL i protokół kas fiskalnych nie są zaimplementowane. Starsze drukarki mogą wymagać przełączenia na POSNET; urządzenia bez superformatki nie wykonają tego wydruku. Wydruk Posnet korzysta z ustawionego w drukarce celu wydruków niefiskalnych — należy włączyć wydruk na papier, jeżeli ustawiony jest wyłącznie zapis do pamięci. Program nie zmienia trwałej konfiguracji drukarki.

ELZAB: oficjalna biblioteka ElzabDR 6.107.4, automatyczny wybór ESC/STX i identyfikacja `pDeviceName`. Wydruk na papier przez `NonFiscalPrintoutBeginPaperPrint(99)`, `pNonFiscalPrintoutLine(10, ..., 1)` i `NonFiscalPrintoutEnd`. Wymagana obsługa niefiskalnej formatki ogólnego przeznaczenia nr 99. Dotyczy rodzin obsługiwanych przez tę bibliotekę; starsze modele bez tej formatki mogą potwierdzić połączenie, ale odmówić wydruku. Port drukarki musi pracować w protokole ELZAB ESC albo STX, nie THERMAL.

Nie ma potwierdzonej zgodności ze wszystkimi modelami i wersjami firmware. Brak dostępu do fizycznych drukarek podczas budowy: testy obejmują emulator TCP POSNET, walidację ramek, błędów i ładowanie biblioteki Elzab. Weryfikacja COM/USB, rzeczywistego wydruku i poszczególnych modeli wymaga podłączenia urządzeń.

Program nie wystawia paragonu sprzedaży, nie wykonuje raportu dobowego, nie fiskalizuje i nie zmienia stawek VAT. Nie stosuje automatycznych powtórzeń poleceń wydruku.

## Źródła i biblioteki

- Logo i dane kontaktowe: https://bckf.pl/ — pobrano 31.10.2026.
- Oficjalna biblioteka i nagłówek API: https://www.elzab.com.pl/ftp/kody/elzabdr.zip
- Oficjalny protokół Elzab: https://www.elzab.com.pl/ftp/kody/om_iprg.zip
- Specyfikacja POSNET POT-I-DEV-37, wersja 5978, 02.11.2023: kopia dokumentu producenta w https://github.com/kashiash/PosnetLibrary/tree/master/DOCS . Serwis producenta dla programistów: https://www.posnet.com.pl/dla-programisty/login/
- Licencja ElzabDR dołączona w ELZAB-Licencja.pdf; zezwala na wykorzystanie i dystrybucję niezmienionej biblioteki. Pozostałe DLL są zależnościami dołączonymi w pakiecie producenta.

## Budowanie i testy

`powershell -ExecutionPolicy Bypass -File build.ps1`

`release/BCKF-Tester.exe --self-test` zapisuje test-results.txt oraz obrazy podglądu interfejsu. Tryb ten nie wyszukuje fizycznych drukarek, a test wydruku wysyła wyłącznie do lokalnego emulatora TCP.
